/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package espe.ccsoft.dao;

import espe.ccsoft.models.Periodo;
import espe.ccsoft.orm.ORMBase;
import java.util.Date;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

/**
 *
 * @author Carlos
 */
public class PeriodoDao extends ORMBase<Periodo> {

    public final void insert(final Periodo periodo) throws SQLException, Exception {
        // Sentencia SQL para realizar la consulta a la BD:        
        super.insertSql = "INSERT INTO PERIODOS ("
                + "RUT_ID, "
                + "PER_HORA, "
                + "PER_INTERVALO, "
                + "PER_CICLO, "
                + "PER_TIPO "
                + ") VALUES(?, ?, ?, ?, ?)";
        super.insert(new Object[]{
            periodo.getRutaId(),
            periodo.getHora(),
            periodo.getIntervalo(),
            periodo.getCiclo(),
            periodo.getTipo(),});
    }
    
    public final void delete (final Periodo periodo) throws Exception{
        super.deleteSql="DELETE FROM PERIODOS WHERE RUT_ID=?";
        
        super.delete(new Object[]{
            periodo.getRutaId(),
        });
    } 

    public final List<Periodo> findSomeByValues(int id_ruta, Date hora,
            Date intervalo, Date ciclo, String tipo) throws Exception {
        super.findSomeSql = "SELECT * FROM PERIODOS WHERE RUT_ID=? "
                + "AND PER_HORA=? "
                + "AND PER_INTERVALO=? "
                + "AND PER_CICLO=? "
                + "AND PER_TIPO=?";
        return super.findSome(new Object[]{
            id_ruta,
            hora,
            intervalo,
            ciclo,
            tipo,});
    }
    
    public final Periodo findOneByValues(int id_ruta, Date hora,
            Date intervalo, Date ciclo, String tipo) throws Exception {
        super.findByPkSql = "SELECT * FROM PERIODOS WHERE RUT_ID=? "
                + "AND PER_HORA=? "
                + "AND PER_INTERVALO=? "
                + "AND PER_CICLO=? "
                + "AND PER_TIPO=?";
        return super.findByPK(new Object[]{
            id_ruta,
            hora,
            intervalo,
            ciclo,
            tipo,});
    }
    
    public final List<Periodo> findAll(int id) throws SQLException, Exception {
        // Sentencia SQL para realizar la consulta a la BD:
        super.findSomeSql = "SELECT * FROM PERIODOS WHERE RUT_ID=?";
        return super.findSome(new Object[]{
            id,});
    }
        
    @Override
    protected Periodo crearObjeto(final ResultSet rs) throws SQLException {
        Periodo periodo = new Periodo();

        periodo.setId(rs.getInt("PER_ID"));
        periodo.setRutaId(rs.getInt("RUT_ID"));
        periodo.setHora(rs.getTime("PER_HORA"));
        periodo.setIntervalo(rs.getTime("PER_INTERVALO"));
        periodo.setCiclo(rs.getTime("PER_CICLO"));
        periodo.setTipo(rs.getString("PER_TIPO"));

        return periodo;
    }
}
